import { weakPassword } from './weak-password'
/**
 * 获取密码普通强度
 * @param {String} value [密码的值]
 */
export function _getPwaInfo (value) {
  // 0： 表示第一个级别 1：表示第二个级别 2：表示第三个级别
  // 3： 表示第四个级别 4：表示第五个级别
  let modes = 0
  let pawMsg = ''
  // 不存在弱密码再校验强度
  if (/\d/.test(value)) {
    // 如果用户输入的密码 包含了数字
    modes++
  }
  if (/[a-z]/.test(value)) {
    // 如果用户输入的密码 包含了小写的a到z
    modes++
  }
  if (/[A-Z]/.test(value)) {
    // 如果用户输入的密码 包含了大写的a到z
    modes++
  }
  if (/[\W]/.test(value)) {
    // 如果是非数字 字母 下划线
    modes++
  }
  if (value.length > 0 && value.length < 1) {
    // 最初级别
    modes = 0
  }

  switch (modes) {
    case 0:
      pawMsg = '低'
      break
    case 1:
      pawMsg = '低'
      break
    case 2:
      pawMsg = '中'
      break
    case 3:
      pawMsg = '高'
      break
    case 4:
      pawMsg = '高'
      break
  }
  return pawMsg
}
/**
 * 获取密码强度 不能包含弱密码并且密码为8-16位数字、字母、特殊字符三种组合
 * @param {String} value [密码的值]
 */
export function setPwaRule (value) {
  const result = {
    modes: 0,
    pawMsg: null
  }
  if (!value) {
    result.pawMsg = null
  }
  // 是弱密码
  const isWeak = weakPassword.some((item) => value.indexOf(item) !== -1)
  if (isWeak) {
    result.modes = 0
    result.pawMsg = '密码不能含有连续的3位以上字符'
  } else if (value.length > 0 && value.length < 8) {
    // 最初级别
    result.modes = 0
    result.pawMsg = '密码为8-16位数字、字母、特殊字符三种组合'
  } else {
    // 不存在弱密码再校验强度
    if (/\d/.test(value)) {
      // 如果用户输入的密码 包含了数字
      result.modes++
    }
    if (/[a-z]/.test(value)) {
      // 如果用户输入的密码 包含了小写的a到z
      result.modes++
    }
    if (/[A-Z]/.test(value)) {
      // 如果用户输入的密码 包含了大写的a到z
      result.modes++
    }
    if (/[\W]/.test(value)) {
      // 如果是非数字 字母 下划线
      result.modes++
    }
    if (result.modes !== 0 && result.modes < 3) {
      result.pawMsg = '密码为8-16位数字、字母、特殊字符三种组合'
    } else {
      result.pawMsg = null
    }
  }
  return result
}
